package come.bjpowernode.javase.thread;
/*
实现多线程的第一种方法：、
    编写一个类继承java.land.Thread，重写run方法。
    怎么创建线程对象，
    怎么启动线程
以下程序有这样的特点：
    主线程和分支线程有先右后输出，有多又少输出。
这是为啥？
 */
public class ThreadTest02 {
    public static void main(String[] args) {
        //这里是main方法，这里的代码属于主线程，在主栈中运

        //新建一个线程对象
        MyThread myThread = new MyThread();
        //myThread.run();//调用这个方法不会启动线程，不会分配新的栈。
        //启动线程
        myThread.start();//这行代码不结束下面的代码不会执行
        //java中亘古不变的原则：main方法中代码遵循自上而下的运行规则。
        //start方法的作用是启动一个分支线程，在JVM中开辟一个新的栈空间，这段任务完成之后，瞬间结束了。
        //这段代码的空间只是为了开启一个新的栈空间，只要新的栈空间开辟出来，线程启动成功，start就结束了。
        //启动成功的线程会自动调用run方法，并且run方法在分支栈的底部
        //run方法在分支栈的底部，main方法在主栈的底部，run和main是平级的。

        //这里的代码运行在主线程
        for (int i = 0; i<1000; i++){
            System.out.println("主线程---》"+i);
        }

    }
}
class MyThread extends Thread{
    @Override
    public void run() {
        //编写程序，这些程序运行在分支栈
        for (int i = 0; i < 1000; i++) {
            System.out.println("分支线程--->" +i);
        }
    }
}